# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/28 10:25 
@Author  : ZhangShenao 
@File    : special_method.py 
@Desc    : 类的特殊方法
在类中,以双下划线__开头和结尾的方法,被称为特殊方法,也被称为魔法方法,这些方法都有特殊的用途
这些特殊方法可以直接调用,也可以通过一些内置函数和操作符来间接调用
常用的特殊方法有:
__init__: 构造方法,用于创建对象时初始化属性,它会在创建对象时被自动调用
__next__: 迭代器方法,在调用迭代器的next()方法时被调用
__len__: 用于获取对象的长度,在调用len()函数时被调用
__str__: 用于获取对象的描述信息,在调用print()方法时会自动调用对象的__str__方法
__getitem__: 用于获取对象的指定索引的元素,在调用索引操作符时被调用
"""


class A:
    """自定义类"""

    def __str__(self):
        """重写__str__方法,返回对象的描述信息"""
        return '这是A类的一个对象'


if __name__ == '__main__':
    # 创建A类的对象
    a = A()

    # 调用print()函数打印对象a,会自动调用__str__方法
    print(a)  # 这是A类的一个对象

    # 调用__getitem__方法获取对象的指定索引的元素,等价于[]索引操作符
    print(f'"abc"[1] is {'abc'[1]}')  # "abc"[1] is b
    print(f'"abc".__getitem__(1) is {'abc'.__getitem__(1)}')  # "abc".__getitem__(1) is b
